package com.dave.gd.core.base.entity;

import java.util.List;

import com.dave.gd.core.base.entity.impl.AbstractBaseEntity;

public interface IAttrSpec {
    
    public void setAttrType(String attrType);
    
    public String getAttrType();
    
    public String getJavaCode();
    
    public String getAttrCd();
    
    public boolean getIsDany(); 
    
    public Long getRefClassId();
    
    public ISysClass getRefClass();
    
    public <T extends IAttrValue> List<T> getAttrValues();
    
    /**
     * 检查：属性基本约束（非空、最小、最大、正则）， 互斥、依赖、取值约束 是否成立
     * .
     * 
     * @param entt
     * @param value
     * @param chkMsg
     * @return
     */
    public boolean beforeSet(AbstractBaseEntity<?> entt, Object value, StringBuffer chkMsg) ;
    
    /**
     * 驱动：依赖、并存、取值，同步 关系的自动处理
     * .
     * 
     * @param entt
     * @param value
     * @param chkMsg
     * @return
     */
    public boolean afterSet(AbstractBaseEntity<?> entt, Object value, StringBuffer chkMsg) ;
    
    /**
     * convertToUI
     * 	根据属性类型将属性值转换成实际对象
     * .	
     * @param attrValue
     * @param entity
     * @return
     * @date 2014/11/27
     *
     */
    public Object convertToUI(String attrValue, AbstractBaseEntity entity) ;
    
    /**
     * convertToUI
     * 	根据属性类型将属性值转换成实际对象
     * .	
     * @param attrValue
     * @return
     * @date 2014/11/27
     *
     */
    public Object convertToUI(String attrValue) ;
    
    /**
     * convertToBean
     * .	
     * @param valueToUi
     * @return
     * @date 2014/11/27
     *
     */
    public String convertToBean(Object valueToUi);
    
    /**
     * convertToBean
     * .	
     * @param valueToUi
     * @param entity
     * @return
     * @date 2014/11/27
     *
     */
    public String convertToBean(Object valueToUi, AbstractBaseEntity entity);
    
    public Long getId();
    
    public void setId(Long id);
    
    public IAttrValue getValueByValueId(Long valueId);

	
}
